package Logica.Piso;

import Logica.ElementoColeccionable.ElementoColeccionable;
import Logica.Objeto.Objeto;
import Logica.Premio.Premio;

public abstract class Piso {
	//Constructor
	/**
	 * Crea una nueva instancia de piso.
	 */
	public Piso() {
	}
	
	/**
	 * Hay premio.
	 *
	 * @return verdadero si Hay premio, falso en caso contrario
	 */
	public abstract boolean hayPremio();

	/**
	 * Hay objeto.
	 *
	 * @return verdadero si Hay objeto, falso en caso contrario
	 */
	public abstract boolean hayObjeto();

	/**
	 * Hay elemento coleccionable.
	 *
	 * @return verdadero si Hay elemento coleccionable, falso en caso contrario
	 */
	public abstract boolean hayElementoColeccionable();
	
	/**
	 * Puede avanzar.
	 *
	 * @return verdadero si el robot puede avanzar (si existe la celda frontal y es transitable), falso en caso contrario
	 */
	public abstract boolean puedeAvanzar();
	
	/**
	 * Obtener objeto.
	 *
	 * @return objeto
	 */
	public abstract Objeto obtenerObjeto();

	/**
	 * Obtener elemento coleccionable.
	 *
	 * @return elemento coleccionable
	 */
	public abstract ElementoColeccionable obtenerElementoColeccionable();
	
	/**
	 * Obtener premio.
	 *
	 * @return premio
	 */
	public abstract Premio obtenerPremio();
	
	public abstract void establecerPremio( Premio premio );
	
	public abstract void establecerElementoColeccionable( ElementoColeccionable elementoColeccionable );
	
	public abstract void establecerObjeto( Objeto objeto );
	
	public abstract void removerPremio();
	
	public abstract void removerElementoColeccionable();
	
	public abstract void removerObjeto();
	
	/**
	 * Gasto_de_combustible.
	 *
	 * @return int
	 */
	public abstract int gasto_de_combustible();
}
